// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g 2012-03-29 09:31:30
 package org.rx; 

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class DispatcherLexer extends Lexer {
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__20=20;
    public static final int T__21=21;
    public static final int T__22=22;
    public static final int T__23=23;
    public static final int T__24=24;
    public static final int T__25=25;
    public static final int METHODS=4;
    public static final int METHOD=5;
    public static final int DEF=6;
    public static final int SIGNATURE=7;
    public static final int TYPE=8;
    public static final int TEMPLATENAME=9;
    public static final int NAME=10;
    public static final int MODIFIER=11;
    public static final int SPACE=12;
    public static final int LINEBREAK=13;
    public static final int WS=14;
    public static final int COMMENT=15;
    public static final int WORD_NAME=16;
    public static final int BASIC_NAME=17;
    public static final int TNAME=18;

    // delegates
    // delegators

    public DispatcherLexer() {;} 
    public DispatcherLexer(CharStream input) {
        this(input, new RecognizerSharedState());
    }
    public DispatcherLexer(CharStream input, RecognizerSharedState state) {
        super(input,state);

    }
    public String getGrammarFileName() { return "/Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g"; }

    // $ANTLR start "T__19"
    public final void mT__19() throws RecognitionException {
        try {
            int _type = T__19;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:9:7: ( '{' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:9:9: '{'
            {
            match('{'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__19"

    // $ANTLR start "T__20"
    public final void mT__20() throws RecognitionException {
        try {
            int _type = T__20;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:10:7: ( ';' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:10:9: ';'
            {
            match(';'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__20"

    // $ANTLR start "T__21"
    public final void mT__21() throws RecognitionException {
        try {
            int _type = T__21;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:11:7: ( '}' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:11:9: '}'
            {
            match('}'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__21"

    // $ANTLR start "T__22"
    public final void mT__22() throws RecognitionException {
        try {
            int _type = T__22;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:12:7: ( ':' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:12:9: ':'
            {
            match(':'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__22"

    // $ANTLR start "T__23"
    public final void mT__23() throws RecognitionException {
        try {
            int _type = T__23;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:13:7: ( '(' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:13:9: '('
            {
            match('('); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__23"

    // $ANTLR start "T__24"
    public final void mT__24() throws RecognitionException {
        try {
            int _type = T__24;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:14:7: ( ',' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:14:9: ','
            {
            match(','); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__24"

    // $ANTLR start "T__25"
    public final void mT__25() throws RecognitionException {
        try {
            int _type = T__25;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:15:7: ( ')' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:15:9: ')'
            {
            match(')'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "T__25"

    // $ANTLR start "MODIFIER"
    public final void mMODIFIER() throws RecognitionException {
        try {
            int _type = MODIFIER;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:30:10: ( ( 'SWAP' | 'TABLE' | 'SWITCH' | 'BTD' | 'INLINE' | 'swap' | 'table' | 'switch' | 'btd' | 'inline' ) )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:2: ( 'SWAP' | 'TABLE' | 'SWITCH' | 'BTD' | 'INLINE' | 'swap' | 'table' | 'switch' | 'btd' | 'inline' )
            {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:2: ( 'SWAP' | 'TABLE' | 'SWITCH' | 'BTD' | 'INLINE' | 'swap' | 'table' | 'switch' | 'btd' | 'inline' )
            int alt1=10;
            alt1 = dfa1.predict(input);
            switch (alt1) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:3: 'SWAP'
                    {
                    match("SWAP"); 


                    }
                    break;
                case 2 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:11: 'TABLE'
                    {
                    match("TABLE"); 


                    }
                    break;
                case 3 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:21: 'SWITCH'
                    {
                    match("SWITCH"); 


                    }
                    break;
                case 4 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:32: 'BTD'
                    {
                    match("BTD"); 


                    }
                    break;
                case 5 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:40: 'INLINE'
                    {
                    match("INLINE"); 


                    }
                    break;
                case 6 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:51: 'swap'
                    {
                    match("swap"); 


                    }
                    break;
                case 7 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:60: 'table'
                    {
                    match("table"); 


                    }
                    break;
                case 8 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:70: 'switch'
                    {
                    match("switch"); 


                    }
                    break;
                case 9 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:81: 'btd'
                    {
                    match("btd"); 


                    }
                    break;
                case 10 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:31:89: 'inline'
                    {
                    match("inline"); 


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "MODIFIER"

    // $ANTLR start "WS"
    public final void mWS() throws RecognitionException {
        try {
            int _type = WS;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:33:3: ( ( SPACE | LINEBREAK ) )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:33:5: ( SPACE | LINEBREAK )
            {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:33:5: ( SPACE | LINEBREAK )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0=='\t'||LA2_0==' ') ) {
                alt2=1;
            }
            else if ( (LA2_0=='\n'||LA2_0=='\r') ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:33:7: SPACE
                    {
                    mSPACE(); 

                    }
                    break;
                case 2 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:34:4: LINEBREAK
                    {
                    mLINEBREAK(); 

                    }
                    break;

            }

            _channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "WS"

    // $ANTLR start "COMMENT"
    public final void mCOMMENT() throws RecognitionException {
        try {
            int _type = COMMENT;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:9: ( '//' (~ ( LINEBREAK ) )* ( LINEBREAK | EOF ) )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:11: '//' (~ ( LINEBREAK ) )* ( LINEBREAK | EOF )
            {
            match("//"); 

            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:16: (~ ( LINEBREAK ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>='\u0000' && LA3_0<='\t')||(LA3_0>='\u000B' && LA3_0<='\f')||(LA3_0>='\u000E' && LA3_0<='\uFFFF')) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:16: ~ ( LINEBREAK )
            	    {
            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:30: ( LINEBREAK | EOF )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0=='\n'||LA4_0=='\r') ) {
                alt4=1;
            }
            else {
                alt4=2;}
            switch (alt4) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:31: LINEBREAK
                    {
                    mLINEBREAK(); 

                    }
                    break;
                case 2 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:38:43: EOF
                    {
                    match(EOF); 

                    }
                    break;

            }

            _channel=HIDDEN;

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "COMMENT"

    // $ANTLR start "SPACE"
    public final void mSPACE() throws RecognitionException {
        try {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:42:2: ( ' ' | '\\t' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:
            {
            if ( input.LA(1)=='\t'||input.LA(1)==' ' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                recover(mse);
                throw mse;}


            }

        }
        finally {
        }
    }
    // $ANTLR end "SPACE"

    // $ANTLR start "LINEBREAK"
    public final void mLINEBREAK() throws RecognitionException {
        try {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:48:5: ( '\\n' | '\\r' | '\\n\\r' )
            int alt5=3;
            int LA5_0 = input.LA(1);

            if ( (LA5_0=='\n') ) {
                int LA5_1 = input.LA(2);

                if ( (LA5_1=='\r') ) {
                    alt5=3;
                }
                else {
                    alt5=1;}
            }
            else if ( (LA5_0=='\r') ) {
                alt5=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:48:7: '\\n'
                    {
                    match('\n'); 

                    }
                    break;
                case 2 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:49:7: '\\r'
                    {
                    match('\r'); 

                    }
                    break;
                case 3 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:50:7: '\\n\\r'
                    {
                    match("\n\r"); 


                    }
                    break;

            }
        }
        finally {
        }
    }
    // $ANTLR end "LINEBREAK"

    // $ANTLR start "BASIC_NAME"
    public final void mBASIC_NAME() throws RecognitionException {
        try {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:55:5: ( WORD_NAME ( '::' WORD_NAME )* )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:55:7: WORD_NAME ( '::' WORD_NAME )*
            {
            mWORD_NAME(); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:55:17: ( '::' WORD_NAME )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==':') ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:55:18: '::' WORD_NAME
            	    {
            	    match("::"); 

            	    mWORD_NAME(); 

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }

        }
        finally {
        }
    }
    // $ANTLR end "BASIC_NAME"

    // $ANTLR start "WORD_NAME"
    public final void mWORD_NAME() throws RecognitionException {
        try {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:59:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:59:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
            {
            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
                input.consume();

            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                recover(mse);
                throw mse;}

            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:59:28: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( ((LA7_0>='0' && LA7_0<='9')||(LA7_0>='A' && LA7_0<='Z')||LA7_0=='_'||(LA7_0>='a' && LA7_0<='z')) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        recover(mse);
            	        throw mse;}


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }

        }
        finally {
        }
    }
    // $ANTLR end "WORD_NAME"

    // $ANTLR start "TNAME"
    public final void mTNAME() throws RecognitionException {
        try {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:2: ( ( ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )? BASIC_NAME ( '*' )? ) )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:4: ( ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )? BASIC_NAME ( '*' )? )
            {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:4: ( ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )? BASIC_NAME ( '*' )? )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:5: ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )? BASIC_NAME ( '*' )?
            {
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:5: ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )?
            int alt12=2;
            alt12 = dfa12.predict(input);
            switch (alt12) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:6: 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) )
                    {
                    match("struct"); 

                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:15: ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) )
                    int alt11=2;
                    alt11 = dfa11.predict(input);
                    switch (alt11) {
                        case 1 :
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:16: ( SPACE )+
                            {
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:16: ( SPACE )+
                            int cnt8=0;
                            loop8:
                            do {
                                int alt8=2;
                                int LA8_0 = input.LA(1);

                                if ( (LA8_0=='\t'||LA8_0==' ') ) {
                                    alt8=1;
                                }


                                switch (alt8) {
                            	case 1 :
                            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:16: SPACE
                            	    {
                            	    mSPACE(); 

                            	    }
                            	    break;

                            	default :
                            	    if ( cnt8 >= 1 ) break loop8;
                                        EarlyExitException eee =
                                            new EarlyExitException(8, input);
                                        throw eee;
                                }
                                cnt8++;
                            } while (true);


                            }
                            break;
                        case 2 :
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:24: ( ( SPACE )* '*' ( SPACE )* )
                            {
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:24: ( ( SPACE )* '*' ( SPACE )* )
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:25: ( SPACE )* '*' ( SPACE )*
                            {
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:25: ( SPACE )*
                            loop9:
                            do {
                                int alt9=2;
                                int LA9_0 = input.LA(1);

                                if ( (LA9_0=='\t'||LA9_0==' ') ) {
                                    alt9=1;
                                }


                                switch (alt9) {
                            	case 1 :
                            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:25: SPACE
                            	    {
                            	    mSPACE(); 

                            	    }
                            	    break;

                            	default :
                            	    break loop9;
                                }
                            } while (true);

                            match('*'); 
                            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:36: ( SPACE )*
                            loop10:
                            do {
                                int alt10=2;
                                int LA10_0 = input.LA(1);

                                if ( (LA10_0=='\t'||LA10_0==' ') ) {
                                    alt10=1;
                                }


                                switch (alt10) {
                            	case 1 :
                            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:36: SPACE
                            	    {
                            	    mSPACE(); 

                            	    }
                            	    break;

                            	default :
                            	    break loop10;
                                }
                            } while (true);


                            }


                            }
                            break;

                    }


                    }
                    break;

            }

            mBASIC_NAME(); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:58: ( '*' )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0=='*') ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:63:58: '*'
                    {
                    match('*'); 

                    }
                    break;

            }


            }


            }

        }
        finally {
        }
    }
    // $ANTLR end "TNAME"

    // $ANTLR start "TEMPLATENAME"
    public final void mTEMPLATENAME() throws RecognitionException {
        try {
            int _type = TEMPLATENAME;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:2: ( 'template' ( SPACE )* '<' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME ( ( SPACE )* ',' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME )* ( SPACE )* '>' )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:4: 'template' ( SPACE )* '<' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME ( ( SPACE )* ',' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME )* ( SPACE )* '>'
            {
            match("template"); 

            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:15: ( SPACE )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0=='\t'||LA14_0==' ') ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:15: SPACE
            	    {
            	    mSPACE(); 

            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            match('<'); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:26: ( SPACE )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0=='\t'||LA15_0==' ') ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:26: SPACE
            	    {
            	    mSPACE(); 

            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            mBASIC_NAME(); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:44: ( SPACE )+
            int cnt16=0;
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0=='\t'||LA16_0==' ') ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:44: SPACE
            	    {
            	    mSPACE(); 

            	    }
            	    break;

            	default :
            	    if ( cnt16 >= 1 ) break loop16;
                        EarlyExitException eee =
                            new EarlyExitException(16, input);
                        throw eee;
                }
                cnt16++;
            } while (true);

            mBASIC_NAME(); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:62: ( ( SPACE )* ',' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME )*
            loop20:
            do {
                int alt20=2;
                alt20 = dfa20.predict(input);
                switch (alt20) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:63: ( SPACE )* ',' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME
            	    {
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:63: ( SPACE )*
            	    loop17:
            	    do {
            	        int alt17=2;
            	        int LA17_0 = input.LA(1);

            	        if ( (LA17_0=='\t'||LA17_0==' ') ) {
            	            alt17=1;
            	        }


            	        switch (alt17) {
            	    	case 1 :
            	    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:63: SPACE
            	    	    {
            	    	    mSPACE(); 

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop17;
            	        }
            	    } while (true);

            	    match(','); 
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:74: ( SPACE )*
            	    loop18:
            	    do {
            	        int alt18=2;
            	        int LA18_0 = input.LA(1);

            	        if ( (LA18_0=='\t'||LA18_0==' ') ) {
            	            alt18=1;
            	        }


            	        switch (alt18) {
            	    	case 1 :
            	    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:74: SPACE
            	    	    {
            	    	    mSPACE(); 

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop18;
            	        }
            	    } while (true);

            	    mBASIC_NAME(); 
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:92: ( SPACE )+
            	    int cnt19=0;
            	    loop19:
            	    do {
            	        int alt19=2;
            	        int LA19_0 = input.LA(1);

            	        if ( (LA19_0=='\t'||LA19_0==' ') ) {
            	            alt19=1;
            	        }


            	        switch (alt19) {
            	    	case 1 :
            	    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:92: SPACE
            	    	    {
            	    	    mSPACE(); 

            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt19 >= 1 ) break loop19;
            	                EarlyExitException eee =
            	                    new EarlyExitException(19, input);
            	                throw eee;
            	        }
            	        cnt19++;
            	    } while (true);

            	    mBASIC_NAME(); 

            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);

            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:112: ( SPACE )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0=='\t'||LA21_0==' ') ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:66:112: SPACE
            	    {
            	    mSPACE(); 

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            match('>'); 

            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "TEMPLATENAME"

    // $ANTLR start "NAME"
    public final void mNAME() throws RecognitionException {
        try {
            int _type = NAME;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:2: ( TNAME ( '<' ( SPACE )* TNAME ( ( SPACE )* ',' ( SPACE )* TNAME )* ( SPACE )* '>' )? )
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:4: TNAME ( '<' ( SPACE )* TNAME ( ( SPACE )* ',' ( SPACE )* TNAME )* ( SPACE )* '>' )?
            {
            mTNAME(); 
            // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:10: ( '<' ( SPACE )* TNAME ( ( SPACE )* ',' ( SPACE )* TNAME )* ( SPACE )* '>' )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0=='<') ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:11: '<' ( SPACE )* TNAME ( ( SPACE )* ',' ( SPACE )* TNAME )* ( SPACE )* '>'
                    {
                    match('<'); 
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:15: ( SPACE )*
                    loop22:
                    do {
                        int alt22=2;
                        int LA22_0 = input.LA(1);

                        if ( (LA22_0=='\t'||LA22_0==' ') ) {
                            alt22=1;
                        }


                        switch (alt22) {
                    	case 1 :
                    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:15: SPACE
                    	    {
                    	    mSPACE(); 

                    	    }
                    	    break;

                    	default :
                    	    break loop22;
                        }
                    } while (true);

                    mTNAME(); 
                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:28: ( ( SPACE )* ',' ( SPACE )* TNAME )*
                    loop25:
                    do {
                        int alt25=2;
                        alt25 = dfa25.predict(input);
                        switch (alt25) {
                    	case 1 :
                    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:29: ( SPACE )* ',' ( SPACE )* TNAME
                    	    {
                    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:29: ( SPACE )*
                    	    loop23:
                    	    do {
                    	        int alt23=2;
                    	        int LA23_0 = input.LA(1);

                    	        if ( (LA23_0=='\t'||LA23_0==' ') ) {
                    	            alt23=1;
                    	        }


                    	        switch (alt23) {
                    	    	case 1 :
                    	    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:29: SPACE
                    	    	    {
                    	    	    mSPACE(); 

                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop23;
                    	        }
                    	    } while (true);

                    	    match(','); 
                    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:40: ( SPACE )*
                    	    loop24:
                    	    do {
                    	        int alt24=2;
                    	        int LA24_0 = input.LA(1);

                    	        if ( (LA24_0=='\t'||LA24_0==' ') ) {
                    	            alt24=1;
                    	        }


                    	        switch (alt24) {
                    	    	case 1 :
                    	    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:40: SPACE
                    	    	    {
                    	    	    mSPACE(); 

                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop24;
                    	        }
                    	    } while (true);

                    	    mTNAME(); 

                    	    }
                    	    break;

                    	default :
                    	    break loop25;
                        }
                    } while (true);

                    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:55: ( SPACE )*
                    loop26:
                    do {
                        int alt26=2;
                        int LA26_0 = input.LA(1);

                        if ( (LA26_0=='\t'||LA26_0==' ') ) {
                            alt26=1;
                        }


                        switch (alt26) {
                    	case 1 :
                    	    // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:69:55: SPACE
                    	    {
                    	    mSPACE(); 

                    	    }
                    	    break;

                    	default :
                    	    break loop26;
                        }
                    } while (true);

                    match('>'); 

                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
    // $ANTLR end "NAME"

    public void mTokens() throws RecognitionException {
        // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:8: ( T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | MODIFIER | WS | COMMENT | TEMPLATENAME | NAME )
        int alt28=12;
        alt28 = dfa28.predict(input);
        switch (alt28) {
            case 1 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:10: T__19
                {
                mT__19(); 

                }
                break;
            case 2 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:16: T__20
                {
                mT__20(); 

                }
                break;
            case 3 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:22: T__21
                {
                mT__21(); 

                }
                break;
            case 4 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:28: T__22
                {
                mT__22(); 

                }
                break;
            case 5 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:34: T__23
                {
                mT__23(); 

                }
                break;
            case 6 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:40: T__24
                {
                mT__24(); 

                }
                break;
            case 7 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:46: T__25
                {
                mT__25(); 

                }
                break;
            case 8 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:52: MODIFIER
                {
                mMODIFIER(); 

                }
                break;
            case 9 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:61: WS
                {
                mWS(); 

                }
                break;
            case 10 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:64: COMMENT
                {
                mCOMMENT(); 

                }
                break;
            case 11 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:72: TEMPLATENAME
                {
                mTEMPLATENAME(); 

                }
                break;
            case 12 :
                // /Users/morandat/workspace/reactor-tools/src/org/rx/Dispatcher.g:1:85: NAME
                {
                mNAME(); 

                }
                break;

        }

    }


    protected DFA1 dfa1 = new DFA1(this);
    protected DFA12 dfa12 = new DFA12(this);
    protected DFA11 dfa11 = new DFA11(this);
    protected DFA20 dfa20 = new DFA20(this);
    protected DFA25 dfa25 = new DFA25(this);
    protected DFA28 dfa28 = new DFA28(this);
    static final String DFA1_eotS =
        "\17\uffff";
    static final String DFA1_eofS =
        "\17\uffff";
    static final String DFA1_minS =
        "\1\102\1\127\3\uffff\1\167\3\uffff\1\101\1\141\4\uffff";
    static final String DFA1_maxS =
        "\1\164\1\127\3\uffff\1\167\3\uffff\1\111\1\151\4\uffff";
    static final String DFA1_acceptS =
        "\2\uffff\1\2\1\4\1\5\1\uffff\1\7\1\11\1\12\2\uffff\1\1\1\3\1\6\1"+
        "\10";
    static final String DFA1_specialS =
        "\17\uffff}>";
    static final String[] DFA1_transitionS = {
            "\1\3\6\uffff\1\4\11\uffff\1\1\1\2\15\uffff\1\7\6\uffff\1\10"+
            "\11\uffff\1\5\1\6",
            "\1\11",
            "",
            "",
            "",
            "\1\12",
            "",
            "",
            "",
            "\1\13\7\uffff\1\14",
            "\1\15\7\uffff\1\16",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
    static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
    static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
    static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
    static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
    static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
    static final short[][] DFA1_transition;

    static {
        int numStates = DFA1_transitionS.length;
        DFA1_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
        }
    }

    class DFA1 extends DFA {

        public DFA1(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 1;
            this.eot = DFA1_eot;
            this.eof = DFA1_eof;
            this.min = DFA1_min;
            this.max = DFA1_max;
            this.accept = DFA1_accept;
            this.special = DFA1_special;
            this.transition = DFA1_transition;
        }
        public String getDescription() {
            return "31:2: ( 'SWAP' | 'TABLE' | 'SWITCH' | 'BTD' | 'INLINE' | 'swap' | 'table' | 'switch' | 'btd' | 'inline' )";
        }
    }
    static final String DFA12_eotS =
        "\1\uffff\1\2\1\uffff\5\2\1\uffff\1\2";
    static final String DFA12_eofS =
        "\12\uffff";
    static final String DFA12_minS =
        "\1\101\1\164\1\uffff\1\162\1\165\1\143\1\164\1\11\1\uffff\1\11";
    static final String DFA12_maxS =
        "\1\172\1\164\1\uffff\1\162\1\165\1\143\1\164\1\52\1\uffff\1\172";
    static final String DFA12_acceptS =
        "\2\uffff\1\2\5\uffff\1\1\1\uffff";
    static final String DFA12_specialS =
        "\12\uffff}>";
    static final String[] DFA12_transitionS = {
            "\32\2\4\uffff\1\2\1\uffff\22\2\1\1\7\2",
            "\1\3",
            "",
            "\1\4",
            "\1\5",
            "\1\6",
            "\1\7",
            "\1\10\26\uffff\1\10\11\uffff\1\11",
            "",
            "\1\10\26\uffff\1\10\40\uffff\32\10\4\uffff\1\10\1\uffff\32"+
            "\10"
    };

    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
    static final short[][] DFA12_transition;

    static {
        int numStates = DFA12_transitionS.length;
        DFA12_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
        }
    }

    class DFA12 extends DFA {

        public DFA12(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 12;
            this.eot = DFA12_eot;
            this.eof = DFA12_eof;
            this.min = DFA12_min;
            this.max = DFA12_max;
            this.accept = DFA12_accept;
            this.special = DFA12_special;
            this.transition = DFA12_transition;
        }
        public String getDescription() {
            return "63:5: ( 'struct' ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) ) )?";
        }
    }
    static final String DFA11_eotS =
        "\4\uffff";
    static final String DFA11_eofS =
        "\4\uffff";
    static final String DFA11_minS =
        "\2\11\2\uffff";
    static final String DFA11_maxS =
        "\1\52\1\172\2\uffff";
    static final String DFA11_acceptS =
        "\2\uffff\1\2\1\1";
    static final String DFA11_specialS =
        "\4\uffff}>";
    static final String[] DFA11_transitionS = {
            "\1\1\26\uffff\1\1\11\uffff\1\2",
            "\1\1\26\uffff\1\1\11\uffff\1\2\26\uffff\32\3\4\uffff\1\3\1"+
            "\uffff\32\3",
            "",
            ""
    };

    static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
    static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS);
    static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS);
    static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS);
    static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS);
    static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS);
    static final short[][] DFA11_transition;

    static {
        int numStates = DFA11_transitionS.length;
        DFA11_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]);
        }
    }

    class DFA11 extends DFA {

        public DFA11(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 11;
            this.eot = DFA11_eot;
            this.eof = DFA11_eof;
            this.min = DFA11_min;
            this.max = DFA11_max;
            this.accept = DFA11_accept;
            this.special = DFA11_special;
            this.transition = DFA11_transition;
        }
        public String getDescription() {
            return "63:15: ( ( SPACE )+ | ( ( SPACE )* '*' ( SPACE )* ) )";
        }
    }
    static final String DFA20_eotS =
        "\4\uffff";
    static final String DFA20_eofS =
        "\4\uffff";
    static final String DFA20_minS =
        "\2\11\2\uffff";
    static final String DFA20_maxS =
        "\2\76\2\uffff";
    static final String DFA20_acceptS =
        "\2\uffff\1\2\1\1";
    static final String DFA20_specialS =
        "\4\uffff}>";
    static final String[] DFA20_transitionS = {
            "\1\1\26\uffff\1\1\13\uffff\1\3\21\uffff\1\2",
            "\1\1\26\uffff\1\1\13\uffff\1\3\21\uffff\1\2",
            "",
            ""
    };

    static final short[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
    static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
    static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
    static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
    static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
    static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
    static final short[][] DFA20_transition;

    static {
        int numStates = DFA20_transitionS.length;
        DFA20_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
        }
    }

    class DFA20 extends DFA {

        public DFA20(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 20;
            this.eot = DFA20_eot;
            this.eof = DFA20_eof;
            this.min = DFA20_min;
            this.max = DFA20_max;
            this.accept = DFA20_accept;
            this.special = DFA20_special;
            this.transition = DFA20_transition;
        }
        public String getDescription() {
            return "()* loopback of 66:62: ( ( SPACE )* ',' ( SPACE )* BASIC_NAME ( SPACE )+ BASIC_NAME )*";
        }
    }
    static final String DFA25_eotS =
        "\4\uffff";
    static final String DFA25_eofS =
        "\4\uffff";
    static final String DFA25_minS =
        "\2\11\2\uffff";
    static final String DFA25_maxS =
        "\2\76\2\uffff";
    static final String DFA25_acceptS =
        "\2\uffff\1\2\1\1";
    static final String DFA25_specialS =
        "\4\uffff}>";
    static final String[] DFA25_transitionS = {
            "\1\1\26\uffff\1\1\13\uffff\1\3\21\uffff\1\2",
            "\1\1\26\uffff\1\1\13\uffff\1\3\21\uffff\1\2",
            "",
            ""
    };

    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
    static final short[][] DFA25_transition;

    static {
        int numStates = DFA25_transitionS.length;
        DFA25_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
        }
    }

    class DFA25 extends DFA {

        public DFA25(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 25;
            this.eot = DFA25_eot;
            this.eof = DFA25_eof;
            this.min = DFA25_min;
            this.max = DFA25_max;
            this.accept = DFA25_accept;
            this.special = DFA25_special;
            this.transition = DFA25_transition;
        }
        public String getDescription() {
            return "()* loopback of 69:28: ( ( SPACE )* ',' ( SPACE )* TNAME )*";
        }
    }
    static final String DFA28_eotS =
        "\10\uffff\10\22\3\uffff\14\22\1\52\5\22\1\52\1\22\1\52\2\22\1\uffff"+
        "\1\22\1\52\5\22\1\52\2\22\1\52\2\22\3\52\1\22\1\52\2\22\57\uffff";
    static final String DFA28_eofS =
        "\156\uffff";
    static final String DFA28_minS =
        "\1\11\7\uffff\1\127\1\101\1\124\1\116\1\167\1\141\1\164\1\156\3"+
        "\uffff\1\101\1\102\1\104\1\114\1\141\1\142\1\155\1\144\1\154\1\120"+
        "\1\124\1\114\1\52\1\111\1\160\1\164\1\154\1\160\1\52\1\151\1\52"+
        "\1\103\1\105\1\uffff\1\116\1\52\1\143\1\145\1\154\1\156\1\110\1"+
        "\52\1\105\1\150\1\52\1\141\1\145\3\52\1\164\1\52\1\145\1\11\1\uffff"+
        "\6\11\1\72\2\11\1\101\10\11\1\72\2\11\1\uffff\1\101\6\11\1\72\3"+
        "\11\1\101\10\11\1\72\1\101\2\11";
    static final String DFA28_maxS =
        "\1\175\7\uffff\1\127\1\101\1\124\1\116\1\167\1\145\1\164\1\156\3"+
        "\uffff\1\111\1\102\1\104\1\114\1\151\1\142\1\155\1\144\1\154\1\120"+
        "\1\124\1\114\1\172\1\111\1\160\1\164\1\154\1\160\1\172\1\151\1\172"+
        "\1\103\1\105\1\uffff\1\116\1\172\1\143\1\145\1\154\1\156\1\110\1"+
        "\172\1\105\1\150\1\172\1\141\1\145\3\172\1\164\1\172\1\145\1\74"+
        "\1\uffff\6\172\1\72\13\172\1\72\1\76\1\172\1\uffff\7\172\1\72\14"+
        "\172\1\72\3\172";
    static final String DFA28_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\10\uffff\1\11\1\12\1\14\27"+
        "\uffff\1\10\24\uffff\1\13\25\uffff\1\13\30\uffff";
    static final String DFA28_specialS =
        "\156\uffff}>";
    static final String[] DFA28_transitionS = {
            "\2\20\2\uffff\1\20\22\uffff\1\20\7\uffff\1\5\1\7\2\uffff\1\6"+
            "\2\uffff\1\21\12\uffff\1\4\1\2\5\uffff\1\22\1\12\6\22\1\13\11"+
            "\22\1\10\1\11\6\22\4\uffff\1\22\1\uffff\1\22\1\16\6\22\1\17"+
            "\11\22\1\14\1\15\6\22\1\1\1\uffff\1\3",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\23",
            "\1\24",
            "\1\25",
            "\1\26",
            "\1\27",
            "\1\30\3\uffff\1\31",
            "\1\32",
            "\1\33",
            "",
            "",
            "",
            "\1\34\7\uffff\1\35",
            "\1\36",
            "\1\37",
            "\1\40",
            "\1\41\7\uffff\1\42",
            "\1\43",
            "\1\44",
            "\1\45",
            "\1\46",
            "\1\47",
            "\1\50",
            "\1\51",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\53",
            "\1\54",
            "\1\55",
            "\1\56",
            "\1\57",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\60",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\61",
            "\1\62",
            "",
            "\1\63",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\64",
            "\1\65",
            "\1\66",
            "\1\67",
            "\1\70",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\71",
            "\1\72",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\73",
            "\1\74",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\75",
            "\1\22\5\uffff\13\22\1\uffff\1\22\4\uffff\32\22\4\uffff\1\22"+
            "\1\uffff\32\22",
            "\1\76",
            "\1\77\26\uffff\1\77\33\uffff\1\100",
            "",
            "\1\101\26\uffff\1\101\40\uffff\32\103\4\uffff\1\103\1\uffff"+
            "\22\103\1\102\7\103",
            "\1\101\26\uffff\1\101\40\uffff\32\103\4\uffff\1\103\1\uffff"+
            "\22\103\1\102\7\103",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\23\105\1\104\6\105",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\32\105",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\21\105\1\110\10\105",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\32\105",
            "\1\111",
            "\1\107\26\uffff\1\107\13\uffff\1\22\21\uffff\1\22\2\uffff\32"+
            "\77\4\uffff\1\77\1\uffff\32\77",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\24\105\1\112\5\105",
            "\32\113\4\uffff\1\113\1\uffff\32\113",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\2\105\1\114\27\105",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\115\1\106\3\uffff\1\22\2\uffff\32\115\4\uffff\1\115\1\uffff"+
            "\32\115",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\23\105\1\116\6\105",
            "\1\107\26\uffff\1\107\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\115\1\106\3\uffff\1\22\2\uffff\32\115\4\uffff\1\115\1\uffff"+
            "\32\115",
            "\1\117\26\uffff\1\117\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\105\1\106\3\uffff\1\22\2\uffff\32\105\4\uffff\1\105\1\uffff"+
            "\32\105",
            "\1\117\26\uffff\1\117\11\uffff\1\22\1\uffff\1\22\21\uffff\1"+
            "\22\2\uffff\32\120\4\uffff\1\120\1\uffff\32\120",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\121\1\122\3\uffff\1\125\2\uffff\32\121\4\uffff\1\121\1\uffff"+
            "\32\121",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\121\1\122\3\uffff\1\125\2\uffff\32\121\4\uffff\1\121\1\uffff"+
            "\32\121",
            "\1\126",
            "\1\123\26\uffff\1\123\13\uffff\1\124\21\uffff\1\125",
            "\1\127\26\uffff\1\127\40\uffff\32\131\4\uffff\1\131\1\uffff"+
            "\22\131\1\130\7\131",
            "",
            "\32\132\4\uffff\1\132\1\uffff\32\132",
            "\1\127\26\uffff\1\127\40\uffff\32\131\4\uffff\1\131\1\uffff"+
            "\22\131\1\130\7\131",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\23\134\1\133\6\134",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\32\134",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\137\1\122\3\uffff\1\125\2\uffff\32\137\4\uffff\1\137\1\uffff"+
            "\32\137",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\21\134\1\140\10\134",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\32\134",
            "\1\141",
            "\1\136\26\uffff\1\136\13\uffff\1\22\21\uffff\1\22\2\uffff\32"+
            "\77\4\uffff\1\77\1\uffff\32\77",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\137\1\122\3\uffff\1\125\2\uffff\32\137\4\uffff\1\137\1\uffff"+
            "\32\137",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\24\134\1\142\5\134",
            "\32\143\4\uffff\1\143\1\uffff\32\143",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\2\134\1\144\27\134",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\145\1\135\3\uffff\1\22\2\uffff\32\145\4\uffff\1\145\1\uffff"+
            "\32\145",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\23\134\1\146\6\134",
            "\1\136\26\uffff\1\136\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\145\1\135\3\uffff\1\22\2\uffff\32\145\4\uffff\1\145\1\uffff"+
            "\32\145",
            "\1\147\26\uffff\1\147\11\uffff\1\22\1\uffff\1\22\3\uffff\12"+
            "\134\1\135\3\uffff\1\22\2\uffff\32\134\4\uffff\1\134\1\uffff"+
            "\32\134",
            "\1\147\26\uffff\1\147\11\uffff\1\22\1\uffff\1\22\21\uffff\1"+
            "\22\2\uffff\32\150\4\uffff\1\150\1\uffff\32\150",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\151\1\152\3\uffff\1\125\2\uffff\32\151\4\uffff\1\151\1\uffff"+
            "\32\151",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\151\1\152\3\uffff\1\125\2\uffff\32\151\4\uffff\1\151\1\uffff"+
            "\32\151",
            "\1\153",
            "\32\154\4\uffff\1\154\1\uffff\32\154",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\155\1\152\3\uffff\1\125\2\uffff\32\155\4\uffff\1\155\1\uffff"+
            "\32\155",
            "\1\123\26\uffff\1\123\11\uffff\1\22\1\uffff\1\124\3\uffff\12"+
            "\155\1\152\3\uffff\1\125\2\uffff\32\155\4\uffff\1\155\1\uffff"+
            "\32\155"
    };

    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
    static final short[][] DFA28_transition;

    static {
        int numStates = DFA28_transitionS.length;
        DFA28_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
        }
    }

    class DFA28 extends DFA {

        public DFA28(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 28;
            this.eot = DFA28_eot;
            this.eof = DFA28_eof;
            this.min = DFA28_min;
            this.max = DFA28_max;
            this.accept = DFA28_accept;
            this.special = DFA28_special;
            this.transition = DFA28_transition;
        }
        public String getDescription() {
            return "1:1: Tokens : ( T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | MODIFIER | WS | COMMENT | TEMPLATENAME | NAME );";
        }
    }
 

}